package com.stq.toutiao.api;

import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpGlobalConfig;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject;
import com.stq.toutiao.model.request.TouTiaoQRCodeParam;
import com.stq.toutiao.model.response.TouTiaoQRCode;

import java.io.InputStream;

import static com.stq.toutiao.config.TouTiaoUrlConfig.CREATEQRCODE_URL;
import static com.stq.toutiao.model.response.TouTiaoErrCodeEnum.ERRCODE_NEGATIVE_2;

/**
 * 获取小程序/小游戏的二维码。该二维码可通过任意 app 扫码打开，
 * 能跳转到开发者指定的对应字节系 app 内拉起小程序/小游戏， <br/>
 * 并传入开发者指定的参数。通过该接口生成的二维码，永久有效，暂无数量限制。<br/>
 *
 * @author stqsht@163.com
 * @date 2020-01-25 10:59
 */
public class TouTiaoQRCodeApi {
    /**
     * 创建二维码
     * @param param
     * @return
     */
    public static TouTiaoQRCode createQRCode(TouTiaoQRCodeParam param) {
        if (StrUtil.isEmpty(param.getAccessToken())) {
            return new TouTiaoQRCode(ERRCODE_NEGATIVE_2.getErrcode(), ERRCODE_NEGATIVE_2.getErrmsg());
        }
        String s = JSONObject.toJSONString(param);
        HttpResponse execute = HttpRequest.post(CREATEQRCODE_URL).timeout(HttpGlobalConfig.getTimeout()).body(s).execute();
        int status = execute.getStatus();
        if (status == 200) {
            InputStream inputStream = execute.bodyStream();
            TouTiaoQRCode code = new TouTiaoQRCode();
            code.setIn(inputStream);
            return code;
        }
        return JSONObject.parseObject(execute.body(), TouTiaoQRCode.class);
    }
}
